// 云函数入口文件
const cloud = require('wx-server-sdk')

cloud.init({
  env: cloud.DYNAMIC_CURRENT_ENV
})

const db = cloud.database()

// 云函数入口函数
exports.main = async (event, context) => {
  const wxContext = cloud.getWXContext()
  
  try {
    const { orderId, action, userId } = event
    
    // 获取订单信息
    const orderResult = await db.collection('orders').doc(orderId).get()
    const order = orderResult.data
    
    if (!order) {
      return {
        success: false,
        error: '订单不存在'
      }
    }
    
    // 获取用户信息
    const userResult = await db.collection('users').doc(userId).get()
    const user = userResult.data
    
    if (!user) {
      return {
        success: false,
        error: '用户不存在'
      }
    }
    
    // 根据操作类型发送不同的通知
    let message = ''
    let title = ''
    
    switch (action) {
      case 'new_order':
        title = '新订单提醒'
        message = `收到新订单：${order.items.map(item => item.dishName).join(', ')}`
        break
      case 'order_confirmed':
        title = '订单确认'
        message = `订单已确认，正在准备中`
        break
      case 'order_completed':
        title = '订单完成'
        message = `订单已完成，可以取餐了`
        break
      case 'order_cancelled':
        title = '订单取消'
        message = `订单已取消`
        break
      default:
        title = '订单状态更新'
        message = `订单状态已更新`
    }
    
    // 发送订阅消息（需要用户授权）
    try {
      await cloud.openapi.subscribeMessage.send({
        touser: user.openid,
        templateId: 'your-template-id', // 需要配置模板ID
        page: 'pages/guest/orders/index',
        data: {
          thing1: { value: title },
          thing2: { value: message },
          time3: { value: new Date().toLocaleString() }
        }
      })
    } catch (error) {
      console.log('发送订阅消息失败:', error)
      // 订阅消息失败不影响主流程
    }
    
    // 记录通知日志
    await db.collection('notifications').add({
      data: {
        orderId,
        userId,
        action,
        title,
        message,
        createdAt: new Date(),
        read: false
      }
    })
    
    return {
      success: true,
      data: {
        message: '通知发送成功'
      }
    }
    
  } catch (error) {
    console.error('订单通知云函数执行失败:', error)
    return {
      success: false,
      error: error.message
    }
  }
} 